package java2_1001;

import java.util.Scanner;

public class OrderUnionSys {
	/*
	 * OrderUnionSys有orderNameArr属性，存储7个姓名
	 * 有orderDishArr属性，存储7个菜品信息
	 * 有orderAddsArr属性，存储7个地址
	 * 有orderDateArr属性，存储7个日期
	 * 有orderTelArr属性，存储7个电话
	 * 有orderStatusArr属性，存储7个状态
	 * 有orderMoneyArr属性，存储7个金额
	 * 有dishNameArr属性，存储4个菜品名
	 * 有dishPriceArr属性，存储4个菜品价格
	 * 有dishPraiseArr属性，存储4个菜品点赞数
	 */
	
	//数据设计，存储订单及菜品信息
	private String [] orderNameArr = new String [3];//订单用户名数组
	private String [] orderDishArr = new String [7];//订单菜品信息数组，格式：糖醋里脊 2份
	private String [] orderAddsArr = new String [7];//订单地址数组
	private String [] orderDateArr= new String [7];//订单日期数组，格式：yyyy-mm-dd
	private String [] orderTelArr = new String [7];//订单电话数组
	private int  [] orderStatusArr = new int  [7];//订单状态数组，0表示已预订，1表示已完成
	private double  [] orderMoneyArr = new double [7];//订单金额数组
	private String [] dishNameArr = new String [4];//菜品名称数组
	private double [] dishPriceArr = new double [4];//菜品价格数组
	private int [] dishPraiseArr = new int  [4];//菜品点赞数数组
	
	@SuppressWarnings("resource")
	public void run () {
		//订单测试数据
		orderNameArr[0]="宋江";
		orderDishArr[0]="鱼香肉丝2份";
		orderAddsArr[0]="北礼士路100号";
		orderDateArr[0]="2020-09-25";
		orderTelArr[0]="13987342809";
		orderStatusArr[0]=1;
		orderMoneyArr[0]=39.99*2;
		
		orderNameArr[1]="吴用";
		orderDishArr[1]="水煮肉片3份";
		orderAddsArr[1]="北礼士路100号";
		orderDateArr[1]="2020-09-26";
		orderTelArr[1]="13954342809";
		orderMoneyArr[1]=15*3;
		
		//菜品测试数据
		dishNameArr[0]="鱼香肉丝";
		dishPriceArr[0]=39.99;
		dishNameArr[1]="宫保鸡丁";
		dishPriceArr[1]=35.99;
		dishNameArr[2]="水煮肉片";
		dishPriceArr[2]=49.99;
		dishNameArr[3]="酱爆鸭片";
		dishPriceArr[3]=45.99;
		
		//定义6个变量，表示6种功能
		String info1="我要订餐";
		String info2="查看餐袋";
		String info3="签收订单";
		String info4="删除订单";
		String info5="我要点赞";
		String info6="退出系统";
		
		//创建扫描器
		Scanner scanner = new Scanner(System.in);
		//定义循环条件，当为false时循环结束
		boolean flag=true;
		while(true) {
			System.out.println("********欢迎光临吃货联盟订餐系统！********");
			System.out.println("1."+info1);
			System.out.println("2."+info2);
			System.out.println("3."+info3);
			System.out.println("4."+info4);
			System.out.println("5."+info5);
			System.out.println("6."+info6);
			System.out.print("请选择您的操作：");
			int choice=scanner.nextInt();
			//用switch判断
			switch (choice) {
			case 1:
				System.out.println("您选择的是："+info1);
				//调用点餐的方法，传参scanner
				orderDish(scanner);
				break;
			case 2:
				System.out.println("您选择的是："+info2);
				//调用方法，显示订单信息
				showOrder();
				break;
			case 3:
				System.out.println("您选择的是："+info3);
				//调用签收订单的方法，传参
				receiveOrder(scanner);
				break;
			case 4:
				System.out.println("您选择的是："+info4);
				//调用删除订单的方法，传参
				deleteOrder(scanner);
				break;
			case 5:
				System.out.println("您选择的是："+info5);
				//调用我要点赞的方法
				praiseDish(scanner);
				break;
			case 6:
				System.out.println("您选择的是："+info6);
				System.out.println("欢迎您下次光临！");
				flag=false;
				break;

			default:
				break;
			}
		}
		
	}
	//我要点赞
	private void praiseDish(Scanner scanner) {
		//调用显示菜品的方法
		showDish();
		System.out.print("请选择您要点的菜品编号：");
		int num=scanner.nextInt();
		dishPraiseArr[num-1]++;
		System.out.println("恭喜您为"+dishNameArr[num-1]+"点赞成功！");
	}
	//删除订单
	private void deleteOrder(Scanner scanner) {
		//先循环遍历餐袋，然后选择需要删除的订单
		showOrder();
		System.out.print("请输入您要删除的订单编号：");
		int num=scanner.nextInt();
		for(int i=num;i<=orderNameArr.length;i++) {
			//被删除的元素之后的元素都要往前移动一位
			//第一种情况：当用户输入的为订单的最后一个，则将最后一个订单改为null
			if(i ==orderNameArr.length) {
				orderNameArr[i-1]=null;
				orderDateArr[i-1]=null;
				orderAddsArr[i-1]=null;
				orderDateArr[i-1]=null;
				orderTelArr[i-1]=null;
				orderStatusArr[i-1]=0;
				orderMoneyArr[i-1]=0;
			}else if(orderNameArr[i]!=null && i!=orderNameArr.length){
				
				orderNameArr[i-1]=orderNameArr[i];
				orderDateArr[i-1]=orderDateArr[i];
				orderAddsArr[i-1]=orderAddsArr[i];
				orderDateArr[i-1]=orderDateArr[i];
				orderTelArr[i-1]=orderTelArr[i];
				orderStatusArr[i-1]=orderStatusArr[i];
				orderMoneyArr[i-1]=orderMoneyArr[i];
			}else {
				orderNameArr[i-1]=null;
				orderDateArr[i-1]=null;
				orderAddsArr[i-1]=null;
				orderDateArr[i-1]=null;
				orderTelArr[i-1]=null;
				orderStatusArr[i-1]=0;
				orderMoneyArr[i-1]=0;
				break;
			}
		}
	}
	//签收订单，传入形参
	private void receiveOrder(Scanner scanner) {
		//默认不存在需要签收的订单
		boolean flag=false;
		for (int i=0;i<orderNameArr.length;i++) {
			if(orderNameArr[i]!=null && orderStatusArr[i]==0) {
				flag=true;
			}
		}
		if(flag) {
			System.out.println("编号\t用户名\t所定菜品信息\t送餐地址\t\t送餐日期\t\t送餐电话\t订单状态\t订单金额");
			for(int i=0;i<orderNameArr.length;i++) {
				if(orderNameArr[i]!=null) {
					System.out.println((i+1)+"\t"+"\t"+orderNameArr[i]+"\t"+orderDishArr[i]+"\t"+"\t"+"\t"+
				orderAddsArr[i]+"\t"+orderDateArr[i]+"\t"+"\t"+orderTelArr[i]+"\t"+"\t"+"\t"+
							(orderStatusArr[i]==0?"已预订":"已完成")+"\t"+"\t"+String .format("%.2f", orderMoneyArr[i]));
				}
			}
			System.out.print("请输入您要签收的订单编号：");
			int num=scanner.nextInt();
			orderStatusArr[num-1]=1;//表示订单状态改变为已完成
			System.out.println("恭喜您，订单签收成功！");
		}else {
			System.out.println("目前不存在需要签收的订单，请您前往订餐模块订餐！");
		}
	}
	//查看餐袋
	private void showOrder() {
		System.out.println("编号\t用户名\t所定菜品信息\t\t送餐地址\t\t送餐日期\t\t送餐电话\t\t\t订单状态\t订单金额");
		for(int i=0;i<orderNameArr.length;i++) {
			if(orderNameArr[i]!=null) {
				System.out.println((i+1)+"\t"+"\t"+orderNameArr[i]+"\t"+orderDishArr[i]+"\t"+"\t"+"\t"+
			orderAddsArr[i]+"\t"+orderDateArr[i]+"\t"+"\t"+orderTelArr[i]+"\t"+"\t"+
						(orderStatusArr[i]==0?"已预订":"已完成")+"\t"+"\t"+String .format("%.2f", orderMoneyArr[i]));
			}
		}
	}

	//我要订餐
	private void orderDish(Scanner scanner) {
		for(int i=0;i<orderNameArr.length;i++) {
			if(orderNameArr[i]==null) {
				System.out.print("请输入订餐人姓名：");
				orderNameArr[i]=scanner.next();
				System.out.println("菜品信息：");
				//调用显示菜品信息的方法
				showDish();
				System.out.print("请输入您要选择的菜品编号：");
				int index=scanner.nextInt();
				System.out.print("请输入您要订餐的份数：");
				int count =scanner .nextInt();
				orderDishArr[i]=dishNameArr[index-1]+" "+count+"份";
				orderMoneyArr[i]=dishPriceArr[index-1]*count;
				System.out.print("请输入您的送餐地址：");
				orderAddsArr[i]=scanner.next();
				System.out.print("请输入您的送餐日期【yyyy-mm-dd】：");
				orderDateArr[i]=scanner.next();
				System.out.print("请输入您的订餐电话：");
				orderTelArr[i]=scanner.next();
				System.out.println("恭喜您，订餐成功！");
				break;
			}
		}
	}
	//定义显示菜品的方法
	private void showDish() {
		System.out.println("编号\t菜品名称\t单价\t点赞数");
		for(int i=0;i<dishNameArr.length;i++) {
			System.out.println((i+1)+"\t"+"\t"+dishNameArr[i]+"\t"+dishPriceArr[i]+"\t"+dishPraiseArr[i]);
		}
	}
}
